package map.gui.util;

import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;



public class Utils {
    public final static String extensions[] = {"xaml", "cs", "xml", "html","xmi"};

    /*
     * Get the extension of a file.
     */
    public static String getExtension(File f) {
        String ext = null;
        String s = f.getName();
        int i = s.lastIndexOf('.');

        if (i > 0 &&  i < s.length() - 1) {
            ext = s.substring(i+1).toLowerCase();
        }
        return ext;
    }

    /** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = Utils.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
    
    public static JTree buildTree(String pathToXml) throws Exception {
        SAXReader reader = new SAXReader();
        Document doc = reader.read(pathToXml);
        return new JTree(build(doc.getRootElement()));
   }

   public static DefaultMutableTreeNode build(String pathToXml) throws Exception {
        SAXReader reader = new SAXReader();
        Document doc = reader.read(pathToXml);
        return (build(doc.getRootElement()));
   }

   public static DefaultMutableTreeNode build(Element e) {
      DefaultMutableTreeNode result = new DefaultMutableTreeNode(e.getText());
      for(Object o : e.elements()) {
         Element child = (Element) o;
         result.add(build(child));
      }

      return result;         
   }

}
